#Demo7.ps1
.\InitializeLG4N.ps1 

 #D?finition des couleurs d'affichage
[System.Collections.Hashtable[]] $ConfigColors=@(
   @{Level="Warn";FColor="Yellow";BColor=""},
   @{Level="Info";FColor="Cyan";BColor=""},
   @{Level="Debug";FColor="Green";BColor=""},
   @{Level="Error";FColor="Red";BColor=""}
 )

 #  !!!!!!!!!! on utilise le repository par d?faut !!!!!!!!!!!!

$MonLogger = Get-LogLogger "LogPowerShell"
Set-LogBasicConfigurator -default 

 #Affiche un seul message
$MonLogger.Info("Message 1")

 #Cr?e un appender console coloris?
$Appender=New-LogColoredConsoleAppender $ConfigColors -name "ConsoleColoris?"|`
           Add-LogLayout -L "%date %-5level - %message%newline" |`
            #On ajoute l'appender issu du pipeline au Logger $MonLogger
            #On active l'appender sans utiliser Enable-LogAppender
           Add-LogAppender -L $MonLogger -Activate
#Affiche deux messages, un par appender. Ici un appender console et un appender console coloris?
$MonLogger.Info("Message 2")           

 #On ajoute au Logger issu du pipeline l'appender $Appender  
$Logger2=Get-LogLogger "Logger2"|Add-LogLoggerAppender -A $Appender
#ici aussi on affichera deux messages.
$Logger2.Info("Message 3") 

$Logger2.Logger.RemoveAllAppenders()

 #Ou sans variable interm?diaire
#Mais ici cela est d?licat car les 2 objets se r?f?rencent mutuellement.
#On cr?e un logger, puis on lui ajoute un appender lequel doit connaitre 
#le repository dans lequel rechercher les niveaux ? valider. 
#Les niveaux sont indiqu?s dans la hashtable de configuration des couleurs.
# 
#Dans ce cas on doit au pr?alable retrouver le repository soit par
# Get-LogRepository -default  ou  Get-LogRepository "RepositoryName"
#soit en pr?cisant le repository lors de l'appel ? Test-Level
$Logger2=Get-LogLogger "Logger2"|`
  Add-LogLoggerAppender -A (
    New-LogColoredConsoleAppender $ConfigColors -name "ConsoleColoris?" |`
           Add-LogLayout -L "%date %-5level - %message%newline" |`
            #Modifie le seuil de l'appender.
            #Ne pas oublier de r??mettre l'objet sinon le segment Foreach renvoi null
           Foreach { $_.Threshold = (Test-LogLevel Warn -R (Get-LogRepository -default));$_ }|`
            #On valide les modifications
           Enable-LogAppender
   )|`
  #Modifie le niveau d'un logger. 
  #Ne pas oublier de r??mettre l'objet sinon le segment Foreach renvoi null
  Foreach {$_.logger.Level= Test-LogLevel Info  -R (Get-LogRepository -default);$_ }

#N'affiche pas de message de DEBUG, car le logger est configur? pour filtrer les messages inf?rieurs ou ?gaux au niveau Info
# OFF < DEBUG < INFO < WARN < ERROR < FATAL < ALL 
$Logger2.Debug("Message De Debug")
 
#Affiche un message, celui du logger ROOT configur? pour filtrer les messages inf?rieurs ou ?gaux au niveau Info.
$Logger2.Info("Message d'information")

#Affiche deux messages, un par appender. 
#Un pour l'appender console ROOT configur? avec le niveau Info et pour l'appender console coloris? configur? avec le niveau Warn 
$Logger2.Warn("Message d'avertissement")

#N'affiche plus que les messages de type FATAL
$Logger2.Logger.Level= Test-LogLevel Fatal -R $Logger2.Logger.Repository
$Logger2.Error("Message 6") 
$Logger2.Fatal("Message 7")
 #On autorise ? nouveaux tous les events pour le logger
 #Le niveau de l'appender coloris? n'est pas modifi?
$Logger2.Logger.Level= Test-LogLevel All -R $Logger2.Logger.Repository
  $Logger2.Debug("Level Debug.")
  $Logger2.Info("Level Info.")
  $Logger2.Warn("Level Warn.")
  $Logger2.Error("Level Error.")
  $Logger2.Fatal("Level Fatal.")
 
 #On autorise ? nouveaux tous les events pour l'appender coloris?
$Logger2.Logger.Appenders[0].Threshold = (Test-LogLevel All -R (Get-LogRepository -default))
# $Logger2.Debug("Level Debug.")...

Stop-Log   


              
